package com.it.machine.service;

import java.util.List;
import com.it.machine.domain.MachineActivation;

/**
 * 激活电脑Service接口
 * 
 * @author 云淡风轻
 * @date 2025-04-28
 */
public interface IMachineActivationService 
{
    /**
     * 查询激活电脑
     * 
     * @param id 激活电脑主键
     * @return 激活电脑
     */
    public MachineActivation selectMachineActivationById(Long id);
    
    /**
     * 根据激活码和项目ID查询激活记录
     * 
     * @param activeCode 激活码
     * @param proId 项目ID
     * @return 激活记录
     */
    public MachineActivation selectMachineActivationByCodeAndProId(String activeCode, String proId);
    
    /**
     * 根据机器码和项目ID查询激活记录
     * 
     * @param machineId 机器码
     * @param proId 项目ID
     * @return 激活记录
     */
    public MachineActivation selectMachineActivationByMachineIdAndProId(String machineId, String proId);
    
    /**
     * 根据项目ID和机器码查询激活记录（用于单独的验证功能）
     * 
     * @param proId 项目ID
     * @param machineId 机器码
     * @return 激活记录
     */
    public MachineActivation selectMachineActivationByProIdAndMachineId(String proId, String machineId);

    /**
     * 查询激活电脑列表
     * 
     * @param machineActivation 激活电脑
     * @return 激活电脑集合
     */
    public List<MachineActivation> selectMachineActivationList(MachineActivation machineActivation);

    /**
     * 新增激活电脑
     * 
     * @param machineActivation 激活电脑
     * @return 结果
     */
    public int insertMachineActivation(MachineActivation machineActivation);

    /**
     * 修改激活电脑
     * 
     * @param machineActivation 激活电脑
     * @return 结果
     */
    public int updateMachineActivation(MachineActivation machineActivation);

    /**
     * 批量删除激活电脑
     * 
     * @param ids 需要删除的激活电脑主键集合
     * @return 结果
     */
    public int deleteMachineActivationByIds(Long[] ids);

    /**
     * 删除激活电脑信息
     * 
     * @param id 激活电脑主键
     * @return 结果
     */
    public int deleteMachineActivationById(Long id);
    
    /**
     * 验证并激活机器
     * 
     * @param proId 项目ID
     * @param machineId 机器码
     * @param activeCode 激活码
     * @return 激活结果：0-成功，1-激活码不存在，2-激活码已使用，3-机器码不匹配，4-激活码已禁用，5-激活码已过期
     */
    public int verifyAndActivate(String proId, String machineId, String activeCode);
    
    /**
     * 禁用机器激活
     * 
     * @param id 机器激活主键
     * @return 结果
     */
    public int disableMachineActivation(Long id);
    
    /**
     * 启用机器激活
     * 
     * @param id 机器激活主键
     * @return 结果
     */
    public int enableMachineActivation(Long id);
}
